/**
 * @author：anlzou
 * @Date：Created in19:12 2021/4/13
 * @Github：https://github.com/anlzou
 * @Description：
 */
package com.anlzou.utlis;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class TraditionalApiAndNioCreateFolder {
    /**
     * 创建文件夹结果（不含父文件夹）
     *
     * 创建文件夹成功返回true，失败返回false。如果被创建文件夹的父文件夹不存在也返回false，没有异常抛出。
     *
     * @param dirStr
     * @return
     */
    public Boolean mkdir(String dirStr){
        File directory = new File(dirStr);
        //mkdir
        boolean hasSucceeded = directory.mkdir();

        return hasSucceeded;
    }

    /**
     * 创建文件夹结果（包含父文件夹）
     *
     * 创建文件夹连同该文件夹的父文件夹，如果创建成功返回true，创建失败返回false。创建失败同样没有异常抛出。
     *
     * @param dirStr
     * @return
     */
    public Boolean mkdirs(String dirStr){
        File directory = new File(dirStr);
        //mkdirs
        Boolean hasSucceeded = directory.mkdirs();

        return hasSucceeded;
    }

    /**
     * 创建文件夹结果（不含父文件夹）
     *
     *      - 如果被创建文件夹的父文件夹不存在，则抛出NoSuchFileException.
     *      - 如果被创建的文件夹已经存在，则抛出FileAlreadyExistsException.
     *      - 如果因为磁盘IO出现异常，则抛出IOException.
     *
     * @param dirStr 输入文件夹名称
     * @throws IOException
     */
    public Path filesCreateDirectory(String dirStr) throws IOException {
        Path path = Paths.get(dirStr);
        Path pathCreate = Files.createDirectory(path);

        return pathCreate;
    }


    /**
     * 创建文件夹结果（包含父文件夹）
     *
     *      - 如果被创建文件夹的父文件夹不存在，就创建它
     *      - 如果被创建的文件夹已经存在，就是用已经存在的文件夹，不会重复创建，没有异常抛出
     *      - 如果因为磁盘IO出现异常，则抛出IOException.
     *
     * @param dirStr
     * @throws IOException
     */
    public Path filesCreateDirectorys(String dirStr) throws IOException {
        Path path = Paths.get(dirStr);
        Path pathCreate = Files.createDirectories(path);

        return pathCreate;
    }

}
